/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.modelos.validadores;

import br.com.saber.certificacao.ejbs.stateless.interfaces.QuestaoBeanLocal;
import br.com.saber.certificacao.modelos.Resposta;
import br.com.saber.certificacao.modelos.validadores.exceptions.RespostaException;
import br.com.saber.certificacao.modelos.validadores.exceptions.generica.ValidacaoExcecao;
import br.com.saber.certificacao.modelos.validadores.interfaces.ValidadorInterface;
import org.apache.commons.lang.StringUtils;

/**
 *
 * @author gbvbahia
 */
public class RespostaValidador implements ValidadorInterface<Resposta, QuestaoBeanLocal> {

    /**
     * ATENÇÃO:
     * Não foi implementado um bean exclusivo para respostas, ele utiliza o mesmo
     * das questões QuestaoBeanLocal
     */
    private void validar(Resposta entidade, QuestaoBeanLocal bean) throws ValidacaoExcecao {
        if (StringUtils.isBlank(entidade.getComentario())) {
            lancarException(("respostaComentarioNulo"), "Comentário:" + entidade.getOrdem());
        }
        if (entidade.getComentario().length() > 150) {
            lancarException(("respostaComentarioLong"), "Comentário:" + entidade.getOrdem());
        }
        if (StringUtils.isBlank(entidade.getResposta())) {
            lancarException(("respostaRespostaNula"), "Resposta:" + entidade.getOrdem());
        }
        if (entidade.getResposta().length() > 250) {
            lancarException(("respostaRespostaLong"), "Resposta:" + entidade.getOrdem());
        }
        if (entidade.getQuestao() == null) {
            lancarException(("respostaQuestaoNula"), "Questao:" + entidade.getOrdem());
        }
    }

    private void lancarException(String msg, String atributo) {
        RespostaException ex = new RespostaException(msg);
        ex.setAtributoName(atributo);
        throw ex;
    }

    /**
     * ATENÇÃO:
     * Não foi implementado um bean exclusivo para respostas, ele utiliza o mesmo
     * das questões QuestaoBeanLocal
     */
    @Override
    public void validar(Resposta entidade, QuestaoBeanLocal bean, Object object) throws ValidacaoExcecao {
        this.validar(entidade, bean);
    }
}
